
#include<stdio.h>
#include<string.h>
#define N 100
#define LEN 100

/**
 * 将输入字符串按空格分割成单词，并存储在二维字符数组中
 * @param str 输入的字符串
 * @param words 存储分割后单词的二维字符数组
 */
void splitstring(char str[], char words[N][LEN]) {
    int wordIndex = 0;  // 当前单词的索引
    int charIndex = 0;  // 当前字符在单词中的索引
    int len = strlen(str);  // 输入字符串的长度
    for (int i = 0; i < len; i++) {
        if (str[i] != ' ') {
            words[wordIndex][charIndex] = str[i];  // 将非空格字符存入当前单词
            charIndex++;
        } else {
            words[wordIndex][charIndex] = '\0';  // 以空字符结束当前单词
            wordIndex++;
            charIndex = 0;  // 重置字符索引以处理下一个单词
        }
    }
}

/**
 * 打印二维字符数组中的单词，按逆序输出
 * @param words 存储单词的二维字符数组
 * @param wordCount 单词的数量
 */
void printReversedString(char words[N][LEN], int wordCount) {
    for (int i = wordCount - 1; i >= 0; i--) {
        printf("%s ", words[i]);  // 按逆序打印每个单词
    }
    printf("\n");  // 换行
}

/**
 * 主函数，程序入口
 * @return 0 表示程序正常结束
 */
int main() {
    char input[LEN];  // 声明一个字符数组来存储用户输入
    printf("Enter a string: ");  // 提示用户输入一个字符串
    gets(input);  // 读取用户输入的字符串
    char words[N][LEN];  // 声明一个二维字符数组来存储分割后的单词
    splitstring(input, words);  // 调用splitstring函数分割字符串
    int wordCount = 0;  // 初始化单词计数器
    for (int i = 0; words[i][0] != '\0'; i++) {
        wordCount++;  // 统计单词数量
    }
    printReversedString(words, wordCount);  // 调用printReversedString函数逆序打印单词
    return 0;  // 返回0表示程序正常结束
}
